.\" Copyright (c) 1980 Regents of the University of California.
.\" All rights reserved.  The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\"
.\"	@(#)profil.2	6.3 (Berkeley) 5/6/87
.\"
.TH PROFIL 2 "May 6, 1987"
.UC 2
.SH NAME
profil \- execution time profile
.SH SYNOPSIS
.nf
.B profil(buff, bufsiz, offset, scale)
.B char *buff;
.B int bufsiz, offset, scale;
.fi
.SH DESCRIPTION
.I Buff
points to an area of core whose length (in bytes) is given by
.IR bufsiz .
After this call, the user's program counter (pc)
is examined each clock tick
(VAX and TAHOE: 100 ticks/second = 10 milliseconds per tick;
60 ticks/second ~= 16 milliseconds per tick);
.I offset
is subtracted from it, and the result multiplied by
.IR scale .
If the resulting number corresponds to a word
inside
.I buff,
that word is incremented.
.PP
The scale is interpreted as an unsigned,
fixed-point fraction with 16 bits of fraction:
0xffff gives a 1-1 mapping of pc's to words
in
.I buff;
0x7fff maps each pair of instruction words
together.
.PP
Profiling is turned off by giving a
.I scale
of 0 or 1.
It is rendered
ineffective by giving a
.I bufsiz
of 0.
Profiling is turned off when an
.I execve
is executed, but remains on in child and parent both
after a
.IR fork .
Profiling is turned off if an update in
.I buff
would cause a memory fault.
.SH "RETURN VALUE
A 0, indicating success, is always returned.
.SH "SEE ALSO"
gprof(1), prof(1), setitimer(2), monitor(3)
